// ---------------------------------------------------------------------------
//  File:ring_build.h
//
//  Description: Contains the data types, constants, and forward declarations
//               used to build the radius rings
//
//  Author: golden.colorado.5280@gmail.com
//
//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
//  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
//  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
//  DEALINGS IN THE SOFTWARE.
// ---------------------------------------------------------------------------


#ifndef RING_BUILDER_H_INCLUDED
#define RING_BUILDER_H_INCLUDED

#include <iostream>
#include <fstream>
#include <sstream>
#include <list>
#include <math.h>
#include <iomanip>          //std::setPrecision
#include "geo_spatial.h"    //all the geospatial algorithms
#include "color_support.h"

#define PI                      3.14159265358979323846 //ratio of a circle's circumference to its diameter
#define INTRVL                  2*PI/360               //number of linear segments in each ring
#define GEO_PRECISION 10        //number of decimal places to include in each LAT/LON point
#define TITLE_PRECISION 3       //number of decimal places to include the title of each KML ring

//Each point in a KML File contains a latitude, longitude, and height above the WGS-84 ellipsoid
typedef struct {
   double lat;     // Site Latitude in decimal degrees */
   double lon;     // Site Longitude in decimal degrees */
   double hgt;     //meters
} KMLPOINT;

//Forward Declarations
void multi_ring(double, double, double, double, unsigned int, double, RGB, RGB, RGB, double, std::string);

#endif // RING_BUILDER_H_INCLUDED
